Storage arrays may help increase data access performance and/or increase fault tolerance. Such storage arrays are commonly described as implementing one or more RAID (redundant arrays of inexpensive disks) levels. For example, RAID level 0 or RAID 0 is commonly used to refer to a storage array that comprises two or more storage devices in which data reads and writes are striped across the storage devices of the array. Striping data reads and writes across the storage devices of the array tends to increase read and write performance since the storage devices of the array are basically accessed in parallel to fulfill the read or write request. A RAID 0 array provides no redundancy, however, and thus does not increase the fault tolerance of the array. As a result, if any storage device of a RAID 0 array fails, all data of the array is generally lost since data associated with the failed storage device is scattered throughout the array.
RAID level 1 or RAID 1 is commonly used to refer to a storage array that comprises two or more storage devices in which data writes are mirrored to each storage device of the array. Mirroring data writes to each storage device of the array generally increases the fault tolerance of the array since if any storage device of the array fails, the data may still be retrieved from another storage device of the array. However, mirroring data writes tends to decrease write performance due to the additional data writes required to mirror the data to other storage devices of the array. Mirroring data may increase read performance if reads are balanced/striped across storage devices of the array. However, many implementations simply direct all read requests to a single storage device of the array and only read from other storage devices of the array in response to a failure.
Finally, RAID level 0+1 or RAID 0+1 is commonly used to refer to a storage array that comprises four or more storage devices in which data writes are mirrored to striped arrays. For example, a RAID 0+1 array may comprise a first RAID 0 array and a second RAID 0 array. The array may further write data to the first RAID 0 array and may mirror the data to the second RAID 0 array in accordance with RAID 1. Again, mirroring data writes generally increases the fault tolerance of the array but decreases write performance due to the additional writes. However, some of the write performance decrease may be offset by the first and second RAID 0 arrays striping data across the storage devices of their respective arrays.